﻿// Decompiled with JetBrains decompiler
// Type: MCM.LightInject.ConstructionInfoProvider
// Assembly: MCMv5, Version=5.10.2.0, Culture=neutral, PublicKeyToken=null
// MVID: 7AB326B9-B2B4-41C2-9177-68E944071101
// Assembly location: D:\steam\steamapps\workshop\content\261550\2859238197\bin\Win64_Shipping_Client\MCMv5.dll

using System;
using System.Diagnostics.CodeAnalysis;

#nullable disable
namespace MCM.LightInject
{
  [ExcludeFromCodeCoverage]
  internal class ConstructionInfoProvider : IConstructionInfoProvider
  {
    private readonly IConstructionInfoBuilder constructionInfoBuilder;
    private readonly ThreadSafeDictionary<Registration, ConstructionInfo> cache = new ThreadSafeDictionary<Registration, ConstructionInfo>();

    public ConstructionInfoProvider(IConstructionInfoBuilder constructionInfoBuilder)
    {
      this.constructionInfoBuilder = constructionInfoBuilder;
    }

    public ConstructionInfo GetConstructionInfo(Registration registration)
    {
      return this.cache.GetOrAdd(registration, new Func<Registration, ConstructionInfo>(this.constructionInfoBuilder.Execute));
    }
  }
}
